#ifndef VVOIP_LOG_H
#define VVOIP_LOG_H



enum LOG_LEVEL {
    LOG_DEBUG=0, //调试
    LOG_INFO, //一般日志
    LOG_WARN, //警告
    LOG_ERROR //错误
};

enum LOG_MODE {
    UNIFORM_LOG=0, //用统一文件名
    DAYLY_LOG,   //按日生成日志 znjz-20170906.log
    MONTHLY_LOG, //按月生成日志 znjz-2017-09.log
    YEARLY_LOG   //按年生成日志
};

extern int FmtWrite(int fd, const char *fmt, ...);//将格式化的内容写入到文件

extern int GetLastError();

class Logger
{
	int fd;
        char filePrefix[16];//文件名的前缀
	int mode; //1-按天生成日志，2-按月生成日志
        int logLevel;//当前日志级别
public:
	Logger();
	/**构造函数
	 * logFile - 日志文件名前缀，按日生成的日志文件最后形式为：Pag20140618.log
	 *           按月生成的日志文件名为：Pag201406.log
	 * m - 日志文件的保存模式，1-按天生成，2-按月生成
	 * lev - 日志级别，当级别高于此值时才写入日志
	 */
	Logger(const char *logFilePre, int m, int lev);

        void setlevel(int lev)
        {
            logLevel=lev;
        }

	/** 析构函数
	 */
	~Logger();

	/**
	 * 日志信息：时间，模块名称，日志级别，日志内容
	 */
	bool Log(const char *modName, int level, const char *fmt, ...);
};

#endif
